<?php

namespace Admin\Controller;

use Think\Model;
use Admin\Model\SiteModel;
use Admin\Model\ArticleModel;

class SiteupdateController extends CommonController {
	public function index() {
		die('网站已经升级,不能操作了');
		$this->_updateSite ();
	}
	public function article() {
		die('网站已经升级,不能操作了');
		$this->_updateArticle ();
	}

	/**
	 * 导入小站内容
	 *
	 * @param number $num
	 */
	private function _updateSite($num = 1) {
		$m = new Model ();
		$site = new SiteModel ();
		$sql = "select * from (SELECT log.id as log_id,c.*,cate.url as cate_url FROM v3_hua_context c LEFT JOIN hua_category cate on c.category_id=cate.id LEFT JOIN v3_hua_update_logs log on log.id =c.context_id where cate.type = 'site' ORDER BY  rand()) tmp where  log_id is NULL LIMIT " . intval ( $num );

		$rs = $m->query ( $sql );
		foreach ( $rs as $v ) {
			$url_name = $v ['url_name'] ? $v ['url_name'] : $this->Pinyin ( $v ['context_title'] );
			$attr = $this->_getAttr ( $v ['context_id'], $url_name );
			$data ['id'] = $v ['context_id'];
			$data ['cid'] = $v ['category_id'];
			$data ['name'] = $v ['context_title'];
			$data ['url'] = $url_name;
			$data ['keyword'] = $v ['context_tags'];
			$data ['intro'] = cut_str ( $v ['context'], 200 );
			$data ['thumb'] = str_replace ( array (
					C ( 'upload_path' ),
					'_500_500'
			), '', $attr ['items'] [0] );
			$data ['createtime'] = date ( 'Y-m-d H:i:s', $v ['context_addtime'] );
			$data ['updatetime'] = $v ['context_updatetime'] ? date ( 'Y-m-d H:i:s', $v ['context_updatetime'] ) : date ( 'Y-m-d H:i:s', $v ['context_addtime'] );
			$data ['viewnum'] = $v ['context_viewnum'];
			$data ['sort'] = ($v ['context_top'] || $v ['context_hot']) ? 1 : 0;
			$data ['context'] = $v ['context'];
			$data ['photo'] = $attr ['html'];
			$siteRs = $site->saveData ( $data );
			if ($siteRs ['status'] == 0) {
				echo $data ['name'] . ':[error]' . $siteRs ['msg'] . '<br>';
			} else {
				$m1 = M ( 'hua_update_logs', 'v3_' );
				$m1->add ( array (
						'id' => $v ['context_id']
				) );
				echo $data ['name'] . ':[ok]' . $siteRs ['msg'] . '<br>';
			}
			echo '<script>setTimeout("location.reload();",1);</script>' . date ( 'Y-m-d H:i:s' );
		}
	}
	private function _updateArticle($num = 1) {
		$m = new Model ();
		$article = new ArticleModel ();
		$sql = "select * from (SELECT log.id as log_id ,c.*  FROM v3_hua_context c LEFT JOIN v3_hua_update_logs log on log.id =c.context_id where  c.category_id >=10 and c.context_title is not NULL ORDER BY  rand()) tmp where  log_id is NULL LIMIT " . intval ( $num );

		$rs = $m->query ( $sql );
		foreach ( $rs as $v ) {
			$url_name = $v ['url_name'] ? $v ['url_name'] : 'huahui-' . $v ['context_id'];
			$attr = $this->_getAttr ( $v ['context_id'], $url_name, 1 );
			$data ['id'] = $v ['context_id'];
			if ($v ['category_id'] == 24 || $v ['category_id'] == 25 || $v ['category_id'] == 28) {
				$cid = 28;
			} else {
				$cid = $v ['category_id'];
			}
			$data ['cid'] = $cid;
			$data ['title'] = $v ['context_title'];
			$data ['url'] = $v ['url_name'];
			$data ['tag'] = $v ['context_tags'];
			$data ['intro'] = cut_str ( $v ['context'], 200 );
			$data ['thumb'] = str_replace ( array (
					C ( 'upload_path' ),
					'_500_500'
			), '', $attr ['items'] [0] );
			$data ['createtime'] = date ( 'Y-m-d H:i:s', $v ['context_addtime'] );
			$data ['updatetime'] = $v ['context_updatetime'] ? date ( 'Y-m-d H:i:s', $v ['context_updatetime'] ) : date ( 'Y-m-d H:i:s', $v ['context_addtime'] );
			$data ['viewnum'] = $v ['context_viewnum'];
			$data ['sort'] = ($v ['context_top'] || $v ['context_hot']) ? 1 : 0;
			$data ['context'] = $v ['context'] . $attr ['html'];

			$siteRs = $article->saveData ( $data );
			if ($siteRs ['status'] == 0) {
				echo $data ['name'] . ':[error]' . $siteRs ['msg'] . '<br>';
			} else {
				$m1 = M ( 'hua_update_logs', 'v3_' );
				$m1->add ( array (
						'id' => $v ['context_id']
				) );
				echo $data ['title'] . ':[ok]' . $siteRs ['msg'] . '<br>';
			}
			echo '<script>setTimeout("location.reload();",1);</script>' . date ( 'Y-m-d H:i:s' );
		}
	}

	/**
	 * 保存远程图片
	 *
	 * @param unknown $url
	 */
	private function _saveImage($url, $savename, $dir = 'huahui') {
		// return './Uploads/huahui/duolangju/duolangju-f35138226b9fad08_500_500.jpg';
		set_time_limit ( 0 ); // 限制最大的执行时间
		$destination_folder = C ( 'upload_path' ) . '/' . $dir . '/' . $savename . '/'; // 文件下载保存目录
		make_dirs ( $destination_folder );
		// 获取文件名
		$pic_name = $savename . '-' . substr ( md5 ( $url ), 8, 16 ) . '.' . substr ( strrchr ( $url, '.' ), 1 );

		// 文件PATH
		$newfname = $destination_folder . $pic_name;
		$path500 = $destination_folder . str_replace ( '.', '_500_500.', $pic_name );
		$path150 = $destination_folder . str_replace ( '.', '_150_150.', $pic_name );

		$file = fopen ( $url, 'rb' );
		if ($file) {
			$newf = fopen ( $newfname, 'wb' );
			if ($newf) {
				while ( ! feof ( $file ) ) {
					fwrite ( $newf, fread ( $file, 1024 * 8 ), 1024 * 8 );
				}
			}
			if ($file) {
				fclose ( $file );
			}
			if ($newf) {
				fclose ( $newf );
			}
		}

		echo '<p>file:' . $newfname . '</p>';
		if (file_exists ( $newfname ) && (strpos ( $url, '.pn' ) > 0 || strpos ( $url, '.jp' ) > 0)) {
			$image = new \Think\Image ();
			$image->open ( $newfname );
			$size = $image->size ();

			if ($size [0] > 500 || $size [1] > 500) {
				$image->thumb ( 500, 500, \Think\Image::IMAGE_THUMB_CENTER )->text ( C ( 'watermark' ), C ( 'watermark_font' ), 12, C ( 'watermark_colour' ), \Think\Image::IMAGE_WATER_SOUTHEAST )->save ( $path500, null, 1 );
			} else {
				$image->text ( C ( 'watermark' ), C ( 'watermark_font' ), 12, C ( 'watermark_colour' ), \Think\Image::IMAGE_WATER_SOUTHEAST )->save ( $path500, null, false );
			}
			$image->open ( $newfname );
			$image->thumb ( 150, 150, \Think\Image::IMAGE_THUMB_CENTER )->save ( $path150, null, false );

			return $path500;
		} else {
			return false;
		}
	}
	private function _getAttr($id, $urlname, $isArticle = 0) {
		$sql = 'SELECT file_name as title,file_path as path FROM v3_hua_file WHERE context_id=' . intval ( $id );
		$m = new Model ();
		$rs = $m->query ( $sql );
		$str = '';
		$result = array ();
		foreach ( $rs as $k => $v ) {
			$url = 'http://hua.fengqiaoju.com/up_files/' . $v ['path'];
			if ($isArticle == 1) {
				$path = $data [$k] = $this->_saveImage ( $url, $urlname, 'huahuiyangzhi' );
			} else {
				$path = $data [$k] = $this->_saveImage ( $url, $urlname );
			}
			if ($path) {
				$str .= '<p><img src="' . str_replace ( C ( 'upload_path' ), C ( 'img_server' ), $path ) . '" title="' . $v ['title'] . '"/></p>';
			}
		}

		$result ['items'] = $data;
		$result ['html'] = $str;
		return $result;
	}
	function Pinyin($_String, $_Code = 'UTF8') { // GBK页面可改为gb2312，其他随意填写为UTF8
		$_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha" . "|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|" . "cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er" . "|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui" . "|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang" . "|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang" . "|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue" . "|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne" . "|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen" . "|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang" . "|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|" . "she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|" . "tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu" . "|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you" . "|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|" . "zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
		$_DataValue = "-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990" . "|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725" . "|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263" . "|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003" . "|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697" . "|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211" . "|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922" . "|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468" . "|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664" . "|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407" . "|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959" . "|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652" . "|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369" . "|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128" . "|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914" . "|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645" . "|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149" . "|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087" . "|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658" . "|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340" . "|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888" . "|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585" . "|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847" . "|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055" . "|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780" . "|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274" . "|-10270|-10262|-10260|-10256|-10254";
		$_TDataKey = explode ( '|', $_DataKey );
		$_TDataValue = explode ( '|', $_DataValue );
		$_Data = array_combine ( $_TDataKey, $_TDataValue );
		arsort ( $_Data );
		reset ( $_Data );
		if ($_Code != 'gb2312')
			$_String = $this->_U2_Utf8_Gb ( $_String );
		$_Res = '';
		for($i = 0; $i < strlen ( $_String ); $i ++) {
			$_P = ord ( substr ( $_String, $i, 1 ) );
			if ($_P > 160) {
				$_Q = ord ( substr ( $_String, ++ $i, 1 ) );
				$_P = $_P * 256 + $_Q - 65536;
			}
			$_Res .= $this->_Pinyin ( $_P, $_Data );
		}
		return preg_replace ( "/[^a-z0-9]*/", '', $_Res );
	}
	private function _Pinyin($_Num, $_Data) {
		if ($_Num > 0 && $_Num < 160) {
			return chr ( $_Num );
		} elseif ($_Num < - 20319 || $_Num > - 10247) {
			return '';
		} else {
			foreach ( $_Data as $k => $v ) {
				if ($v <= $_Num)
					break;
			}
			return $k;
		}
	}
	private function _U2_Utf8_Gb($_C) {
		$_String = '';
		if ($_C < 0x80) {
			$_String .= $_C;
		} elseif ($_C < 0x800) {
			$_String .= chr ( 0xC0 | $_C >> 6 );
			$_String .= chr ( 0x80 | $_C & 0x3F );
		} elseif ($_C < 0x10000) {
			$_String .= chr ( 0xE0 | $_C >> 12 );
			$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
			$_String .= chr ( 0x80 | $_C & 0x3F );
		} elseif ($_C < 0x200000) {
			$_String .= chr ( 0xF0 | $_C >> 18 );
			$_String .= chr ( 0x80 | $_C >> 12 & 0x3F );
			$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
			$_String .= chr ( 0x80 | $_C & 0x3F );
		}
		return iconv ( 'UTF-8', 'GB2312', $_String );
	}
}
